package rulusoft.nook.rssReader;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import android.util.Log;

public class core {
	
	private String auth;
	private static String authSatic="";
	private String token;
	private String login;
	private String password;
	public String result;
	
	private String title;
	private String link;
	
	public String getTitle() {
		return this.title;
	}
	public String link() {
		return this.link;
	}
	public void setAuthSatic(String _auth) {
		this.authSatic=_auth;
	}
	public String getAuthStatic() {
		return this.authSatic;
	}
	
	public void setLogin(String login) {
		this.login=login;
	}
	public void setPassword(String password) {
		this.password=password;
	}
	
	public String getAuth() {
		return this.auth;
	}
	public String getToken() {
		return this.token;
	}
	
	public void setAuth(String auth) {
		this.auth=auth;
	}
	public void setToken(String token) {
		this.token=token;
	}

    public String getGoogleAuthKey(String _USERNAME, String _PASSWORD) {
        String responseString = ""; 
        URL url;
        try {
            //open the connection 
            url = new URL("https://www.google.com/accounts/ClientLogin");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);  

            //create the body
            StringBuilder sb = new StringBuilder();
            sb.append("accountType="); 
            sb.append("GOOGLE"); 
            sb.append("&Email=");
            sb.append(_USERNAME);
            sb.append("&Passwd=");
            sb.append(_PASSWORD);
            sb.append("&service="); 
            sb.append("reader");
            sb.append("&source=");    
            sb.append("&lt;your app name&gt;"); 

            //make a request and retrieve results
            OutputStream outputStream = urlConnection.getOutputStream();  
            outputStream.write(sb.toString().getBytes("UTF-8"));
            outputStream.close(); 
            sb = null; 

            int responseCode = urlConnection.getResponseCode();
            InputStream inputStream;  
            if (responseCode == HttpURLConnection.HTTP_OK) {
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                String _AUTHKEY = responseString.substring(responseString.indexOf("Auth="), responseString.length());
                responseString = _AUTHKEY.replace( "Auth=","" );
                inputStream.close();
                urlConnection.disconnect(); 
            }else {  
                urlConnection.disconnect(); 
                return "error"; 
            }
        } catch (Exception e) {
            return e.getMessage();  
        }
        Log.d("GoogleReader", "Auth.a=" + responseString); 
        return responseString.trim();
    }

    public String getGoogleToken(String authorization) {
        final String googleReaderTokenUrl = "https://www.google.com/reader/api/0/token"; 
        String responseString = ""; 
        URL url;

        try {
            //open the connection 
            url = new URL(googleReaderTokenUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            Log.d("GoogleReader", "Auth.b=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);

            try {
                 InputStream inputStream = new BufferedInputStream(urlConnection.getInputStream());
                 responseString = convertStreamToString(inputStream);
            }catch(Exception e){
                int responseCode = urlConnection.getResponseCode();
                   return Integer.toString(responseCode); 
                //return e.getMessage(); 
            }finally {
                 urlConnection.disconnect();
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 
    }
    
    /** GET SUBSCRIPTION LIST **/
    public String getGoogleSubscriptionList(String authorization) {
        final String googleReaderTokenUrl = "https://www.google.com/reader/api/0/subscription/list"; 
        String responseString = "";
        InputStream inputStream=null;
        URL url;

        try {
            //open the connection 
            url = new URL(googleReaderTokenUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            Log.d("GoogleReader", "Auth.b=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);

            try {
                 inputStream = new BufferedInputStream(urlConnection.getInputStream());
                 responseString = convertStreamToString(inputStream);
            }catch(Exception e){
                int responseCode = urlConnection.getResponseCode();
                   return Integer.toString(responseCode); 
            }finally {
                 urlConnection.disconnect();
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 
    }
    
    /***************************************************************************/
    /**************************** GET ATOM FEEDS LIST **************************/
    /***************************************************************************/
    
    public String getGoogleAtomFeed(String authorization) {
    	final String googleReaderTokenUrl = "http://www.google.com/reader/atom/"; 
        String responseString = "";
        InputStream inputStream=null;
        URL url;

        try {
            //open the connection 
            url = new URL(googleReaderTokenUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            Log.d("GoogleReader", "Auth.b=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestMethod("GET");
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlendcoded");
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);

            try {
                 inputStream = new BufferedInputStream(urlConnection.getInputStream());
                 responseString = convertStreamToString(inputStream);
            }catch(Exception e){
                int responseCode = urlConnection.getResponseCode();
                   return Integer.toString(responseCode); 
            }finally {
                 urlConnection.disconnect();
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 
    }

    /*
    public String postToGoogleReader(String token, String authorization){
        final String googleAuthUrl = "http://www.google.com/reader/api/0/item/edit"; 
        String responseString = "";  
        URL url;
        try { 

            //create the body
            StringBuilder sb = new StringBuilder();
            sb.append("accountType=");
            sb.append("GOOGLE");
            sb.append("&snippet=");
            sb.append(URLEncoder.encode("TheSnippet", "UTF-8"));
            sb.append("&T=");
            sb.append(URLEncoder.encode(token, "UTF-8"));
            sb.append("&share=");
            sb.append(false);
            sb.append("&url=");
            sb.append(URLEncoder.encode("http://developer.android.com/index.html", "UTF-8"));
            sb.append("&title=");
            sb.append(URLEncoder.encode("TheTitle", "UTF-8"));
            sb.append("&srcTitle=");    
            sb.append(URLEncoder.encode("TheSource", "UTF-8"));
            sb.append("&srcUrl=");    
            sb.append(URLEncoder.encode("www.your_web_site", "UTF-8"));


            //open the connection 
            url = new URL(googleAuthUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            Log.d("GoogleReader", "Auth.c=" + authorization); 
            urlConnection.addRequestProperty("Authorization", "GoogleLogin auth=" + authorization); 
            urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            urlConnection.setRequestProperty("Content-Length", Integer.toString(sb.toString().getBytes("UTF-8").length));
            urlConnection.setUseCaches(false);
            urlConnection.setDoOutput(true);


            //make a request and retrieve results
            OutputStream outputStream = urlConnection.getOutputStream();
            outputStream.write(sb.toString().getBytes("UTF-8"));
            outputStream.close();
            sb = null;   

            int responseCode = urlConnection.getResponseCode();
            InputStream inputStream;
            if (responseCode == HttpURLConnection.HTTP_OK) {
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                inputStream.close();
                urlConnection.disconnect(); 
            }else {  
                inputStream = urlConnection.getInputStream();
                responseString = convertStreamToString(inputStream);
                urlConnection.disconnect(); 
                return "error"; 
            }
        } catch (Exception e) {
            return e.getMessage(); 
        }
        return responseString; 

    }
	*/
	
    private String convertStreamToString(InputStream is) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
}	

}
